package com.hds.modules.app.service.impl;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.hds.common.utils.PageUtils;
import com.hds.modules.app.dao.MessageMainBodyDao;
import com.hds.modules.app.dao.UserDao;
import com.hds.modules.app.dao.UserMessageDao;
import com.hds.modules.app.entity.MsgMainBody;
import com.hds.modules.app.entity.UserEntity;
import com.hds.modules.app.entity.UserMessage;
import com.hds.modules.app.service.UserMessageService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import com.hds.common.utils.Query;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import sun.plugin.util.UserProfile;

@Service
public class UserMessageServiceImpl extends ServiceImpl<UserMessageDao, UserMessage> implements UserMessageService {
	Logger logger = LoggerFactory.getLogger(UserMessageServiceImpl.class);
	
	/** The msg dao. */
	@Resource
	private UserMessageDao userMessageDao;
	
	@Resource
	private MessageMainBodyDao messageMainBodyDao;
	
	@Resource
	private UserDao userDao;

	@Override
	public void save(UserMessage message) {
		userMessageDao.insert(message);
	}

	@Override
	public void update(UserMessage message) {
		userMessageDao.updateById(message);
	}

	@Override
	public UserMessage get(Integer id) {
		return userMessageDao.selectById(id);
	}

	@Override
	public Integer queryMaxBatchByCompanyId(Integer companyId) {
		return null;
	}



	@Override
	public PageUtils queryPage(Map<String, Object> params) {
		String uid = (String)params.get("uid");
		String key = (String)params.get("key");

		logger.info("列表：{}", params.toString());
		Page<UserMessage> page = this.selectPage(
				new Query<UserMessage>(params).getPage(),
				new EntityWrapper<UserMessage>()
						.eq("uid", uid)
						.ne("status", UserMessage.STATUS_DELETED)
		);

		List<UserMessage> list = page.getRecords();
		for(UserMessage um : list) {
				if(um!=null){
					String imgStr=um.getImgsStr();
					if(!"".equals(imgStr)){
						um.setImgs(imgStr.split(","));
					}
					UserEntity up=userDao.selectById(um.getUid());
					if(up!=null){
//						um.setUsername(up.getWxUserNickname());
//						um.setAvatar(up.getWxUserHeadimgurl());
//						um.setMobile(up.getUsername());
					}
				}
				setValues(um);
			}

		return new PageUtils(page);
	}

	public void setValues(UserMessage um){
		Map<String, String> map = new HashMap<String, String>();
		if(UserMessage.TYPE_MSG.equals(um.getType())){
			UserEntity user = userDao.selectById(um.getUid());
			if(user!=null){
//				map.put("avatar", user.getWxUserHeadimgurl());
//				map.put("name", user.getWxUserNickname());
				map.put("mobile", user.getUsername());
			}
		}else{
			MsgMainBody mmb = messageMainBodyDao.selectById(um.getMainBodyUid());
			if(mmb!=null){
				map.put("avatar", mmb.getAvatar());
				map.put("name", mmb.getName());
				map.put("mobile", mmb.getMobile());
			}
		}
		um.setAvatar(map.get("avatar"));
		um.setUsername(map.get("name"));
		um.setMobile(map.get("mobile"));

	}


	
//	@Override
//	public PageInfo<UserMessage> listByPage(String status, String type, String inter, String mainBody, String uid, int currPage, int targPage, int pageSize) {
//		// TODO Auto-generated method stub
//		PageInfo<UserMessage> pageInfo = new PageInfo<UserMessage>();
//		pageInfo.setCurrPage(currPage);
//		pageInfo.setTargPage(targPage);
//		pageInfo.setPageSize(pageSize);
//		Result<UserMessage> result = userMessageDao.listByPage(status, type,inter,mainBody,uid,pageInfo);
//		pageInfo.setResult(result);
//
//		if(result.getResultList() != null && result.getResultList().size() > 0) {
//			for(UserMessage um : result.getResultList()) {
//				if(um!=null){
//					String imgStr=um.getImgsStr();
//					if(!"".equals(imgStr)){
//						um.setImgs(imgStr.split(","));
//					}
//					UserProfile up=userProfileDao.get(um.getUid());
//					if(up!=null){
//						um.setUsername(up.getWxUserNickname());
//						um.setAvatar(up.getWxUserHeadimgurl());
//						um.setMobile(up.getUsername());
//					}
//				}
//				setValues(um);
//			}
//			if(inter!=null && UserMessage.OP_WEB.equals(inter)){
//				Collections.reverse(result.getResultList());
//			}
//
//		}
//		return pageInfo;
//	}
	


	@Override
	public UserMessage findMaxOne(Integer userId) {
		// TODO Auto-generated method stub
		return userMessageDao.findMaxOne(userId);
	}

	public UserMessage findMaxOneMessageAndMajorNoutNull(Integer userId){
		// TODO Auto-generated method stub
		return userMessageDao.findMaxOneMessageAndMajorNoutNull(userId);
	}

}
